package set;

import linkedList.LinkedList;

/**
 * @program: play-structure
 * @author: baichen
 * 基于链表实现的集合类,链表存储的数据类型不一定要有可比性，所以可以不用继承Comparable
 **/
public class LinkedListSet<E> implements Set<E> {
    private LinkedList<E> list;

    public LinkedListSet() {
        list = new LinkedList<>();
    }

    @Override
    public int getSize() {
        return list.getSize();
    }

    @Override
    public boolean isEmpty() {
        return list.isEmpty();
    }

    //不能添加重复元素,链表是可以存放重复元素的，所以这里要先判断一下
    @Override
    public void add(E e) {
        if (!list.contains(e))    //只有不包含元素e才会执行添加操作
            list.addFirst(e);       //在链表头添加元素，时间复杂度是O(1)
    }

    @Override
    public boolean contains(E e) {
        return list.contains(e);
    }

    @Override
    public void remove(E e) {
        list.removeElement(e);
    }
}
